#! /bin/bash # выполнение команды на роутерах # v1.1 (c) Sanych logi () { echo `date '+%d %b %g %T'` $1 | tee -a $log } if [ $# -lt 2 ] ; then echo -e "usage `basename $0` LIST COMMANDS [FILE]"; exit 1 fi log=~/log/`basename $0`.log > $log list=$1 commnd=$2 sendfile=$3 trap 'logi "Break by user" ; exit 1' 2 while read LINE ; do if ping -c1 $LINE >/dev/null 2>&1 ; then if [ $# -eq 3 ] ; then scp $sendfile `id -nu`@$LINE: >/dev/null 2>/dev/null if [ $? = 255 ] ; then logi "$LINE ssh error!" fi fi ssh $LINE bash < $commnd && logi "$LINE OK!!!" if [ $? = 255 ] ; then logi "$LINE ssh error!" fi else logi "$LINE no ping..." echo $LINE >> ~/log/`basename $0`$$.error fi done <$list
При выполнении данного кода нужно чтобы авторизация сессии ssh происходила по ключу